SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO




CREATE PROC [dbo].[SP_TASALD_EMPR_Q20]    
/*---------------------------------------------------------------------*/    
/*----- Empresa          : OFISIS S.A.                            -----*/    
/*----- Cliente          : OFISIS S.A.                            -----*/    
/*----- Sistema          : Contabilidad                           -----*/    
/*----- Modulo           : Empresa                                -----*/    
/*----- Programa         : Consulta de Saldos                     -----*/    
/*----- Nombre           : SP_TASALD_EMPR_Q20                     -----*/    
/*----- Script           : TASALD_EMPR                            -----*/    
/*----- Desarrollado     : Maria Laura Uribe                      -----*/    
/*----- Fecha            : 23/06/1997                             -----*/    
/*----- Base de Datos    : MS SQL Server                          -----*/    
/*----- Version BD       : 6.5                                    -----*/    
/*----- Invoca a SP      :                                        -----*/    
/*---------------------------------------------------------------------*/    
/*---------------------------------------------------------------------*/    
/*----- Modificado 1 por : PDGV                                   -----*/    
/*----- Fecha Modifica   : 31/03/2004                             -----*/    
/*----- Detalle Modifica : Se modifico para que grabe en una      -----*/    
/*----- temporal # ya no en la tabla fija, TIPO DATO @VSCO_CNTA_EMPR-----*/    
/*---------------------------------------------------------------------*/    
/*---------------------------------------------------------------------*/    
/*----- Modificado 2 por : PDGV                                   -----*/    
/*----- Fecha Modifica   : 26/04/2004                             -----*/    
/*----- Detalle Modifica : SE A?ADIO UNA COLUMNA DE DIFERENCIA ENTRE A?OS -----*/    
/*---------------------------------------------------------------------*/    
/*---------------------------------------------------------------------*/    
/*----- Drop Proc SP_TASALD_EMPR_Q20                              -----*/    
/*----- Grant Execute On SP_TASALD_EMPR_Q20 To PUBLIC             -----*/    
/*----- EXEC SP_TASALD_EMPR_Q20 '01',1,2002,2003,3,5,'12101',1,'N','P','LUZ' -----*/    
/*---------------------------------------------------------------------*/    
@ISCO_EMPR       TD_VC_002,    
@INNU_CNTB_EMPR       TD_IN_001_CONT,    
@INNU_ANO1       TD_IN_004_ANNO,    
@INNU_ANO2       TD_IN_004_ANNO,    
@INNU_MESE       TD_IN_002_MESE,    
@INNV_QUIE       TD_IN_001,    
@ISCO_CNTA_EMPR       TD_VC_020_CNTA,    
@INNI_AUXI       TD_IN_001,    
@ISTI_MUES       TD_VC_001,    
@ISTI_PRES       TD_VC_001    
--@ISID_SESS            TD_VC_008_USUA    
As    
    
Declare    
-- Variables Cursor    
@CSCO_CNTA       TD_VC_020,     
@CSDE_CNTA       TD_VC_050,     
@CNIM_CARG_MVTO       TD_NU_016_004,     
@CNIM_ABON_MVTO       TD_NU_016_004,     
@CNIM_SALD_MVTO       TD_NU_016_004,     
-- Variables Para Acumular    
    
@VNNU_MESE            TD_IN_001,     
@VNIM_CARG_MESE       TD_NU_016_004,     
@VNIM_ABON_MESE       TD_NU_016_004,     
@VNIM_SALD_MESE       TD_NU_016_004,     
@VNIM_CARG_MESE_ACUM  TD_NU_016_004,     
@VNIM_ABON_MESE_ACUM  TD_NU_016_004,     
@VNIM_SALD_MESE_ACUM  TD_NU_016_004,     
@VNNU_ANNO       TD_IN_004_ANNO,    
@VSCO_CNTA_EMPR       Varchar(21),    
@VNNU_MILE       Int    
    
--Begin Tran SP_TASALD_EMPR_Q20    
    
  Create Table #TWSALD_EMPR_Q20     
  (CO_CNTA_EMPR Varchar(20) NULL,     
   DE_CNTA_EMPR Varchar(50) NULL,    
   IM_CARG_PRIM Numeric(16, 4) NULL,    
   IM_ABON_PRIM Numeric(16, 4) NULL,     
   IM_SALD_PRIM Numeric(16, 4) NULL,     
   IM_CARG_SEGU Numeric(16, 4) NULL,    
   IM_ABON_SEGU Numeric(16, 4) NULL,     
   IM_SALD_SEGU Numeric(16, 4) NULL)    
    
  -- Seteando Variables    
  If @ISCO_CNTA_EMPR = ''    
     Select @ISCO_CNTA_EMPR = Null    
  Select @VSCO_CNTA_EMPR = Rtrim(@ISCO_CNTA_EMPR) + '%'    
  If @ISTI_MUES = 'N'    
     Select @VNNU_MILE = 1    
  Else If @ISTI_MUES = 'E'     
     Select @VNNU_MILE = 1000    
  Else If @ISTI_MUES = 'O'     
     Select @VNNU_MILE = 1000000    
  -- Elimino Data    
  Delete #TWSALD_EMPR_Q20     
/*  If @@error != 0    
  Begin    
     Raiserror 20001 'Error en Stored Procedure'    
     Rollback Tran SP_TASALD_EMPR_Q20    
  End*/    
    
-----------------------------------------------------------------------------------------------------    
----------------  TIPO DE PRESENTACION POR PERIODO -------------    
-----------------------------------------------------------------------------------------------------    
If @ISTI_PRES = 'P'    -- Tipo de Presentaci?n por Periodo    
 Begin       
  If @INNI_AUXI =  0   -- Declaro Cursor de Cuentas    
  Begin    
    Insert  #TWSALD_EMPR_Q20 (CO_CNTA_EMPR, DE_CNTA_EMPR,    
           IM_CARG_PRIM, IM_ABON_PRIM, IM_SALD_PRIM, IM_CARG_SEGU,    
           IM_ABON_SEGU, IM_SALD_SEGU)    
    Select t1.CO_CNTA_EMPR, Max(t2.DE_CNTA_EMPR),     
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0)/@VNNU_MILE), 0),2),     
           Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0)/@VNNU_MILE), 0),2),    
           Round(Isnull(Sum(Isnull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB, 0)),0)/@VNNU_MILE,2),    
           0, 0, 0    
    From   TASALD_EMPR t1, TMPLAN_EMPR t2    
    Where  t1.CO_EMPR = @ISCO_EMPR    
    And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
    And    t1.NU_ANNO = @INNU_ANO1    
    And    t1.NU_MESE = @INNU_MESE    
    And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
    And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE    
    And    t1.TI_AUXI_EMPR is Null    
    And    t1.CO_AUXI_EMPR is Null    
    And    t1.CO_ORDE_SERV is Null    
    And    t2.CO_EMPR = t1.CO_EMPR    
    And    t2.NU_ANNO = 9999    
    And    t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR    
    Group  By t1.CO_CNTA_EMPR    
    Order  By t1.CO_CNTA_EMPR asc    
/*    If @@error != 0    
    Begin    
      Raiserror 20001 'Error en Stored Procedure'    
      Rollback Tran SP_TASALD_EMPR_Q20    
    End*/    
    
    Declare CU_TASALD_EMPR_Q20_2 Cursor     
    For                                                                                                                                                                                                                                                        
  
    
    
    Select t1.CO_CNTA_EMPR,     
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0)), 0)/@VNNU_MILE,2),     
           Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2),     
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2)    
    From   TASALD_EMPR t1    
    Where  t1.CO_EMPR = @ISCO_EMPR    
    And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
    And    t1.NU_ANNO = @INNU_ANO2     
    And    t1.NU_MESE = @INNU_MESE    
    And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
    And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE    
    And    t1.TI_AUXI_EMPR Is Null    
    And    t1.CO_AUXI_EMPR Is Null    
    And    t1.CO_ORDE_SERV Is Null    
    Group  By t1.CO_CNTA_EMPR    
    Order  By t1.CO_CNTA_EMPR asc    
  End   -- Fin de Cursor de Cuentas    
    
  Else If @INNI_AUXI =  1  -- Declaro Cursor de Cuentas y Auxiliares    
  Begin    
    -- Grabo valores de Auxiliares    
    Insert  #TWSALD_EMPR_Q20 (CO_CNTA_EMPR, DE_CNTA_EMPR,    
           IM_CARG_PRIM,IM_ABON_PRIM,IM_SALD_PRIM, IM_CARG_SEGU,    
           IM_ABON_SEGU, IM_SALD_SEGU )    
    Select t1.TI_AUXI_EMPR+'-'+t1.CO_AUXI_EMPR,    
           Max(t2.NO_AUXI),     
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0)), 0)/@VNNU_MILE,2),     
           Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2),    
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2),    
           0, 0, 0    
    From   TASALD_EMPR t1, TMAUXI_EMPR t2    
    Where  t1.CO_EMPR = @ISCO_EMPR    
    And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
    And    t1.NU_ANNO = @INNU_ANO1    
    And    t1.NU_MESE = @INNU_MESE    
    And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
    And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE    
    And    t1.TI_AUXI_EMPR is Not Null    
    And    t1.CO_AUXI_EMPR is Not Null    
    And    t2.CO_EMPR = t1.CO_EMPR    
    And    t2.TI_AUXI_EMPR = t1.TI_AUXI_EMPR    
    And    t2.CO_AUXI_EMPR = t1.CO_AUXI_EMPR    
    Group  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
    Order  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
/*    If @@error != 0    
    Begin    
      Raiserror 20001 'Error en Stored Procedure'    
      Rollback Tran SP_TASALD_EMPR_Q20    
    End*/    
    
    Declare CU_TASALD_EMPR_Q20_2 Cursor For    
    Select t1.TI_AUXI_EMPR+'-'+t1.CO_AUXI_EMPR,    
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0)), 0)/@VNNU_MILE,2),     
       Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2),    
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2)    
    From   TASALD_EMPR t1, TMAUXI_EMPR t2    
    Where  t1.CO_EMPR = @ISCO_EMPR    
    And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
    And    t1.NU_ANNO = @INNU_ANO2 --@VNNU_ANNO    
    And    t1.NU_MESE = @INNU_MESE    
    And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
    And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE     And    t1.TI_AUXI_EMPR is Not Null    
    And    t1.CO_AUXI_EMPR is Not Null    
    And    t2.CO_EMPR = t1.CO_EMPR    
    And    t2.TI_AUXI_EMPR = t1.TI_AUXI_EMPR    
    And    t2.CO_AUXI_EMPR = t1.CO_AUXI_EMPR    
    Group  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
    Order  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
  End    -- Fin de cursor de Cuentas y Auxiliares    
    
 Open CU_TASALD_EMPR_Q20_2    
 Fetch CU_TASALD_EMPR_Q20_2 Into  @CSCO_CNTA, @CNIM_CARG_MVTO,     
        @CNIM_ABON_MVTO, @CNIM_SALD_MVTO    
 While @@Fetch_status = 0    
  Begin    
   Update  #TWSALD_EMPR_Q20    
   Set  IM_CARG_SEGU = @CNIM_CARG_MVTO,    
        IM_ABON_SEGU = @CNIM_ABON_MVTO,    
        IM_SALD_SEGU = @CNIM_SALD_MVTO    
   Where CO_CNTA_EMPR =  @CSCO_CNTA    
    
    
/*   If @@error != 0    
     Begin    
       Raiserror 20001 'Error en Stored Procedure'    
       Rollback Tran SP_TASALD_EMPR_Q20    
     End*/    
       
   Fetch CU_TASALD_EMPR_Q20_2 Into @CSCO_CNTA, @CNIM_CARG_MVTO,     
         @CNIM_ABON_MVTO, @CNIM_SALD_MVTO    
  End  -- While    
 Close CU_TASALD_EMPR_Q20_2    
 Deallocate CU_TASALD_EMPR_Q20_2    
End     -- Fin de Tipo de Presentaci?n por Periodo    
    
-----------------------------------------------------------------------------------------------------    
-----------------  TIPO DE PRESENTACION ACUMULADO --------------    
-----------------------------------------------------------------------------------------------------    
Else If @ISTI_PRES = 'A'     
 Begin    
  If @INNI_AUXI =  0  -- Declaro Cursor de Cuentas    
   Begin    
    Insert #TWSALD_EMPR_Q20 (CO_CNTA_EMPR, DE_CNTA_EMPR,    
           IM_CARG_PRIM,IM_ABON_PRIM,IM_SALD_PRIM, IM_CARG_SEGU,    
           IM_ABON_SEGU, IM_SALD_SEGU)    
    Select t1.CO_CNTA_EMPR, Max(t2.DE_CNTA_EMPR),     
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0)), 0)/@VNNU_MILE,2),     
           Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2),    
           Round(Sum(IsNull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB,0))/@VNNU_MILE,2),    
           0, 0, 0    
    From   TASALD_EMPR t1, TMPLAN_EMPR t2    
    Where  t1.CO_EMPR = @ISCO_EMPR    
    And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
    And    t1.NU_ANNO = @INNU_ANO1    
    And    t1.NU_MESE <= @INNU_MESE    
    And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
    And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE    
    And    t1.TI_AUXI_EMPR is Null    
    And    t1.CO_AUXI_EMPR is Null    
    And    t1.CO_ORDE_SERV is Null    
    And    t2.CO_EMPR = t1.CO_EMPR    
    And    t2.NU_ANNO = 9999    
    And    t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR    
    Group  By t1.CO_CNTA_EMPR    
    Order  By t1.CO_CNTA_EMPR asc    
/*    If @@error != 0    
    Begin    
      Raiserror 20001 'Error en Stored Procedure'    
      Rollback Tran SP_TASALD_EMPR_Q20    
    End*/    
    
    Declare CU_TASALD_EMPR_Q20_2 Cursor     
    For                                                                                                                                                                                                                                                        
  
    
    Select t1.CO_CNTA_EMPR,     
           Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0))/@VNNU_MILE, 0),2),     
           Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0))/@VNNU_MILE, 0),2),     
           Round(Isnull(Sum(IsNull(Isnull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB, 0),0))/@VNNU_MILE, 0),2)    
    From   TASALD_EMPR t1    
    Where  t1.CO_EMPR = @ISCO_EMPR    
    And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
    And    t1.NU_ANNO = @INNU_ANO2     
    And    t1.NU_MESE <= @INNU_MESE    
    And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
    And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE    
    And    t1.TI_AUXI_EMPR Is Null    
    And    t1.CO_AUXI_EMPR Is Null    
    And    t1.CO_ORDE_SERV Is Null    
    Group  By t1.CO_CNTA_EMPR    
    Order  By t1.CO_CNTA_EMPR asc    
   End    -- Fin de Cursor de Cuentas    
   Else If @INNI_AUXI =  1  -- Declaro Cursor de Cuentas y Auxiliares    
    Begin    
     Insert #TWSALD_EMPR_Q20 (CO_CNTA_EMPR, DE_CNTA_EMPR,    
            IM_CARG_PRIM,IM_ABON_PRIM,IM_SALD_PRIM, IM_CARG_SEGU,    
           IM_ABON_SEGU, IM_SALD_SEGU)    
     Select t1.TI_AUXI_EMPR+'-'+t1.CO_AUXI_EMPR, Max(t2.NO_AUXI),              Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0))/@VNNU_MILE, 0),2),     
            Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0))/@VNNU_MILE, 0),2),    
            Round(Isnull(Sum(IsNull(Isnull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB, 0),0))/@VNNU_MILE, 0),2),    
            0, 0, 0    
     From   TASALD_EMPR t1, TMAUXI_EMPR t2    
     Where  t1.CO_EMPR = @ISCO_EMPR    
     And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
     And    t1.NU_ANNO = @INNU_ANO1    
     And    t1.NU_MESE <= @INNU_MESE    
     And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
     And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE    
     And    t1.TI_AUXI_EMPR is Not Null    
     And    t1.CO_AUXI_EMPR is Not Null    
     And    t2.CO_EMPR = t1.CO_EMPR    
     And    t2.TI_AUXI_EMPR = t1.TI_AUXI_EMPR    
     And    t2.CO_AUXI_EMPR = t1.CO_AUXI_EMPR    
     Group  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
     Order  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
/*     If @@error != 0    
     Begin    
      Raiserror 20001 'Error en Stored Procedure'    
      Rollback Tran SP_TASALD_EMPR_Q20    
     End*/    
    
     Declare CU_TASALD_EMPR_Q20_2 Cursor For    
     Select t1.TI_AUXI_EMPR+'-'+t1.CO_AUXI_EMPR,    
            Round(Isnull(Sum(IsNull(t1.IM_CARG_CNTB,0)), 0)/@VNNU_MILE,2),     
            Round(Isnull(Sum(IsNull(t1.IM_ABON_CNTB,0)), 0)/@VNNU_MILE,2),    
            Round(Isnull(Sum(IsNull(Isnull(t1.IM_CARG_CNTB, 0) - Isnull(t1.IM_ABON_CNTB, 0),0))/@VNNU_MILE, 0),2)    
     From   TASALD_EMPR t1, TMAUXI_EMPR t2    
     Where  t1.CO_EMPR = @ISCO_EMPR    
     And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR    
     And    t1.NU_ANNO = @INNU_ANO2     
     And    t1.NU_MESE <= @INNU_MESE    
     And    t1.CO_CNTA_EMPR like @VSCO_CNTA_EMPR    
     And    datalength(t1.CO_CNTA_EMPR) = @INNV_QUIE          And    t1.TI_AUXI_EMPR is Not Null    
     And    t1.CO_AUXI_EMPR is Not Null    
     And    t2.CO_EMPR = t1.CO_EMPR    
     And    t2.TI_AUXI_EMPR = t1.TI_AUXI_EMPR    
     And    t2.CO_AUXI_EMPR = t1.CO_AUXI_EMPR    
     Group  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
     Order  By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR     
    End     -- Fin de Cursor de Cuentas y Auxiliares    
  Open CU_TASALD_EMPR_Q20_2    
  Fetch CU_TASALD_EMPR_Q20_2 Into  @CSCO_CNTA, @CNIM_CARG_MVTO,     
        @CNIM_ABON_MVTO, @CNIM_SALD_MVTO    
  While @@Fetch_status = 0    
  Begin    
   Update #TWSALD_EMPR_Q20    
   Set  IM_CARG_SEGU = @CNIM_CARG_MVTO,    
        IM_ABON_SEGU = @CNIM_ABON_MVTO,    
        IM_SALD_SEGU = @CNIM_SALD_MVTO    
   Where CO_CNTA_EMPR =  @CSCO_CNTA    
    
/*   If @@error != 0    
     Begin    
       Raiserror 20001 'Error en Stored Procedure'    
       Rollback Tran SP_TASALD_EMPR_Q20    
     End*/    
    
   Fetch CU_TASALD_EMPR_Q20_2 Into @CSCO_CNTA, @CNIM_CARG_MVTO,     
        @CNIM_ABON_MVTO, @CNIM_SALD_MVTO    
  End  -- While    
 Close CU_TASALD_EMPR_Q20_2    
 Deallocate CU_TASALD_EMPR_Q20_2    
End     -- Fin de Tipo de Presentaci?n Acumulado    
    
 --- select final     
 Select  CO_CNTA_EMPR, DE_CNTA_EMPR, IM_CARG_PRIM, IM_ABON_PRIM,    
 IM_SALD_PRIM, IM_CARG_SEGU, IM_ABON_SEGU, IM_SALD_SEGU, IM_SALD_PRIM + IM_SALD_SEGU,     
 IM_SALD_PRIM - IM_SALD_SEGU    
 From #TWSALD_EMPR_Q20    
    
--Commit Tran SP_TASALD_EMPR_Q20    
/*----------------------------------------- Fin ----------------------------------------*/    
  







GO
